﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Capa_Negocios;


namespace Calendarizacion_URL
{
    public partial class FormUsuario : Form
    {
        Form padre;
        bool cambiarPass = false;
        private int idUsuario;
        public FormUsuario(Form padre)
        {
            InitializeComponent();
            this.padre = padre;            
            button8.Visible = false;
            button9.Visible = false;
            button10.Visible = false;
            button11.Visible = false;
            idUsuario = 0;
            //*******************//
            listar();
            mensajes();
            //*******************//             
        }

        private void mensajes()
        {
            ToolTip toolTip = new System.Windows.Forms.ToolTip();
            toolTip.SetToolTip(button15, "Cambiar contraseña");
            toolTip.SetToolTip(button15, "Guardar los cambios");
            toolTip.SetToolTip(button3, "Limpiar el formulario");
            toolTip.SetToolTip(button5, "Regresar al listado de usuarios");
        }

        private void listar()
        {
            groupBox1.Visible = false;
            groupBox5.Visible = true;
            groupBox2.Visible = false;
            List<object> lista;
            lista = Usuario.listarTodos();
            dataGridView1.DataSource = null;
            dataGridView1.RowCount = lista.Count();
            dataGridView1.ColumnCount = 5;
            dataGridView1.Columns[0].HeaderText = "Nombre personal";
            dataGridView1.Columns[1].HeaderText = "Usuario";
            dataGridView1.Columns[2].HeaderText = "Puesto";
            dataGridView1.Columns[3].HeaderText = "No. Teléfono";
            dataGridView1.Columns[4].Visible = false;
            string[] cadena = new string[5];
            for (int i = 0; i < lista.Count(); i++)
            {
                cadena = lista.ElementAt(i).ToString().Split(',');
                dataGridView1[0, i].Value = cadena[1].Substring(5);
                dataGridView1[1, i].Value = cadena[2].Substring(5);
                dataGridView1[2, i].Value = cadena[3].Substring(5);
                dataGridView1[3, i].Value = cadena[4].Substring(5, cadena[4].Length - 8);
                dataGridView1[4, i].Value = cadena[0].Substring(5);
            }
        }

        private void ingresarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            groupBox1.Visible = true;
            groupBox2.Visible = false;
            groupBox5.Visible = false;
            limpiar();
        }

        private void limpiar()
        {
            button8.Visible = false;
            button9.Visible = false;
            button10.Visible = false;
            button11.Visible = false;
        }

        private void modificarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            groupBox2.Visible = true;
            groupBox1.Visible = false;
            groupBox5.Visible = false;
        }

        private void eliminarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            groupBox2.Visible = false;
            groupBox1.Visible = false;
            groupBox5.Visible = false;
        }

        private void regresarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            padre.Enabled = true;
            this.Dispose();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            padre.Enabled = true;
            this.Dispose();
        }

        private void FormUsuario_Load(object sender, EventArgs e)
        {
            permitidoList.Text = "";
            disponibleList.Text = "";
            listarToolStripMenuItem_Click(sender, e);
        }

        private void listarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            groupBox1.Visible = false;
            groupBox2.Visible = false;
            groupBox5.Visible = true;
        }

        private void textBox4_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar))
                e.Handled = false;
            else if (Char.IsControl(e.KeyChar))
                e.Handled = false;
            else
                e.Handled = true;
        }

        private void FormUsuario_FormClosing(object sender, FormClosingEventArgs e)
        {
            padre.Enabled = true;
            this.Dispose();
        }

        private void button12_Click(object sender, EventArgs e)
        {
            listar();
        }

        private void ingresarUsuario()
        {
            bool existeUser= Usuario.verificarUsuario(textBox1.Text);
            if (existeUser == false)
            {
                MessageBox.Show(Usuario.insertar(textBox1.Text, textBox3.Text, int.Parse(textBox4.Text), comboBox2.Text, maskedTextBox1.Text, checkBox1.Checked));
                //for (int i = 0; i < permitidoList2.Items.Count; i++)
                //    Usuario.insertarCargo(Usuario.ultimoUser(), permitidoList2.Items[i].ToString());
                //MessageBox.Show("Usuario guardado exitosamente");
            }
            else
                MessageBox.Show("El usuario ya existe, porfavor elija otro");                         
        }

        private void button1_Click_1(object sender, EventArgs e)
        {
            int error = 0;
            if (textBox3.Text.Equals(""))
            {
                MessageBox.Show("Debe ingresar un nombre");
                button8.Visible = true;
                error++;
            }
            if (textBox1.Text.Equals(""))
            {
                MessageBox.Show("Debe ingresar un nombre");
                button9.Visible = true;
                error++;
            }
            if (!maskedTextBox1.Text.Equals(maskedTextBox2.Text))
            {
                MessageBox.Show("Las contraseñas no coinciden");
                button11.Visible = true;
                error++;
            }
            if (maskedTextBox1.Text.Equals("") || maskedTextBox2.Text.Equals(""))
            {
                MessageBox.Show("Ingrese una contraseña");
                button11.Visible = true;
                error++;
            }
            if (textBox4.Text.Length != 8)
            {
                MessageBox.Show("El número telefónico no es correcto");
                button10.Visible = true;
                error++;
            }
            if (error == 0)
            {
                if (MessageBox.Show("Realmente desea guardar?", "Ok", MessageBoxButtons.YesNo) == DialogResult.Yes)
                    ingresarUsuario();                  
            }
        }

        private void nuevoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            groupBox1.Visible = false;
            groupBox5.Visible = true;
            groupBox2.Visible = false;
        }

        private void nuevoUsuario()
        {
            groupBox1.Visible = true;
            groupBox2.Visible = false;
            groupBox5.Visible = false;
            permitidoList2.Items.Clear();
            disponibleList2.Items.Clear();
            string[] temp = new string[2];
            List<object> carreras = Carrera.listarCarreras();
            for (int i = 0; i < carreras.Count; i++)
            {
                temp = carreras.ElementAt(i).ToString().Split(',');
                disponibleList2.Items.Add(temp[1].Substring(18,temp[1].Length-20));
            }
        }

        private void listarToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            nuevoUsuario();
        }

        private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            groupBox1.Visible = false;
            groupBox1.Hide();
            groupBox5.Hide();
            groupBox5.Visible = false;
            groupBox2.Visible = true;
            idUsuario = int.Parse(dataGridView1[4, e.RowIndex].Value.ToString());
            editarUsuario();
        }

        private void editarUsuario()
        {
            List<object> lista = Usuario.datos(idUsuario);
            string[] temp = lista.ElementAt(0).ToString().Split(',');
            nombreText.Text = temp[0].Substring(5);
            usuarioText.Text = temp[1].Substring(5);
            passText.Text = "*************";
            telText.Text = temp[3].Substring(5);
            puestoCombo.Text = temp[2].Substring(5);
            permitidoList.Items.Clear();
            disponibleList.Items.Clear();
            //Carreras a su cargo
            for (int i = 0; i < lista.Count(); i++)
            {
                temp = lista.ElementAt(i).ToString().Split(',');
                if (temp[5].Contains("True"))
                    permitidoList.Items.Add(temp[4].Substring(5));
            }
            //Listado de carreras totales
            List<object> carreras = Carrera.listarCarreras();
            for (int i = 0; i < carreras.Count(); i++)
            {
                temp = carreras.ElementAt(i).ToString().Split(',');
                disponibleList.Items.Add(temp[1].Substring(18, temp[1].Length - 20));
            }
        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {
            List<object> lista;
            //Listar Usuarios por nombre
            if (radioButton3.Checked)
                lista = Usuario.listarusuariosNombre(textBox2.Text);
            //Listar Usuarios por usuario
            else
                lista = Usuario.listarusuariosUser(textBox2.Text);
            dataGridView1.DataSource = null;
            dataGridView1.RowCount = lista.Count();
            string[] cadena = new string[5];
            for (int i = 0; i < lista.Count(); i++)
            {
                cadena = lista.ElementAt(i).ToString().Split(',');
                dataGridView1[0, i].Value = cadena[1].Substring(5);
                dataGridView1[1, i].Value = cadena[2].Substring(5);
                dataGridView1[2, i].Value = cadena[3].Substring(5);
                dataGridView1[3, i].Value = cadena[4].Substring(5, cadena[4].Length - 8);
                dataGridView1[4, i].Value = cadena[0].Substring(5);
            }
        }

        private void button15_Click_1(object sender, EventArgs e)
        {
            if (cambiarPass == false)
            {
                cambiarPass = true;
                label11.Enabled = true;
                label10.Enabled = true;
                passText.Enabled = true;
                pass2Text.Enabled = true;
                passText.Text = "";
            }
            else
            {
                cambiarPass = false;
                label11.Enabled = false;
                label10.Enabled = false;
                passText.Enabled = false;
                pass2Text.Enabled = false;
                passText.Text = "*************";
            }
        }

        private void button16_Click_1(object sender, EventArgs e)
        {
            if (disponibleList.SelectedItems.Count > 0)
            {
                bool aparece = false;
                string temp = disponibleList.SelectedItem.ToString();
                for (int i = 0; i < permitidoList.Items.Count; i++)
                {
                    if (permitidoList.Items[i].ToString().Equals(temp))
                        aparece = true;
                }
                if (aparece == false)
                    permitidoList.Items.Add(temp);
            }
        }

        private void button6_Click_1(object sender, EventArgs e)
        {
            if (disponibleList.Items.Count > 0)
            {
                permitidoList.Items.Clear();
                for (int i = 0; i < disponibleList.Items.Count; i++)
                    permitidoList.Items.Add(disponibleList.Items[i]);
            }
        }

        private void button4_Click_1(object sender, EventArgs e)
        {
            permitidoList.Items.Clear();
        }

        private void button17_Click_1(object sender, EventArgs e)
        {
            if (permitidoList.SelectedItems.Count > 0)
            {
                int aux = permitidoList.Items.IndexOf(permitidoList.SelectedItem);
                permitidoList.Items.RemoveAt(aux);
            }
        }

        private void button5_Click_1(object sender, EventArgs e)
        {
            listar();            
        }

        private void menúPrincipalToolStripMenuItem_Click(object sender, EventArgs e)
        {
            padre.Enabled = true;
            this.Dispose();
        }

        private void button7_Click(object sender, EventArgs e)
        {
            guardarEdicion();
            MessageBox.Show("Datos guardados exitosamente");
        }

        private void guardarEdicion()
        {
            List<string> carreras = new List<string>();
            for (int i = 0; i < permitidoList.Items.Count; i++)
                carreras.Add(permitidoList.Items[i].ToString());
            //Misma contraseña
            if (cambiarPass == false)
                Usuario.editar(idUsuario, usuarioText.Text, nombreText.Text, int.Parse(telText.Text), puestoCombo.Text);
            //Nueva contraseña
            else
                Usuario.editarPass(idUsuario, usuarioText.Text, nombreText.Text, int.Parse(telText.Text), puestoCombo.Text,
                    pass2Text.Text, pass2Text.Text);
            Usuario.cargos(idUsuario, carreras);
        }

        private void button3_Click(object sender, EventArgs e)
        {
            usuarioText.Text = "";
            nombreText.Text = "";
            telText.Text = "";
            permitidoList.Items.Clear();
            puestoCombo.Text = "";
        }

        private void button14_Click(object sender, EventArgs e)
        {
            if (disponibleList2.SelectedItems.Count > 0)
            {
                bool aparece = false;
                string temp = disponibleList2.SelectedItem.ToString();
                for (int i = 0; i < permitidoList2.Items.Count; i++)
                {
                    if (permitidoList2.Items[i].ToString().Equals(temp))
                        aparece = true;
                }
                if (aparece == false)
                    permitidoList2.Items.Add(temp);
            }
        }

        private void button19_Click(object sender, EventArgs e)
        {
            if (disponibleList2.Items.Count > 0)
            {
                permitidoList2.Items.Clear();
                for (int i = 0; i < disponibleList2.Items.Count; i++)
                    permitidoList2.Items.Add(disponibleList2.Items[i]);
            }
        }

        private void button18_Click(object sender, EventArgs e)
        {
            permitidoList2.Items.Clear();
        }

        private void button13_Click(object sender, EventArgs e)
        {
            if (permitidoList2.SelectedItems.Count > 0)
            {
                int aux = permitidoList2.Items.IndexOf(permitidoList2.SelectedItem);
                permitidoList2.Items.RemoveAt(aux);
            }
        }

        private void button2_Click_1(object sender, EventArgs e)
        {
            permitidoList2.Items.Clear();
            textBox3.Text = "";
            textBox1.Text = "";
            maskedTextBox1.Text = "";
            maskedTextBox2.Text = "";
            textBox4.Text = "";
            comboBox2.Text = "";
            checkBox1.Checked = false;
        }

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            
        }
    }
}
